package com.cskaoyan.javase.oop2.encapsulate._1extends._8hidden._1notice;

/**
 * 关于属性隐藏的注意事项:
 *      1.引用决定了访问范围,这是因为引用的类型属于变量的声明
 *          声明为什么类型,编译器就认为是什么类型
 *      2.引用的数据类型也决定了对象名.成员变量的访问结果
 *          说明"对象名.成员变量"的访问,在整个类的编译时期就确定了
 *      3.属性的隐藏,父类中的同名成员变量仍然是存在的,仍然可以访问到
 *          比如通过父类的Getter方法
 *          也可以在子类中用super关键字访问,当然要注意访问权限
 *
 *      4.静态成员变量,它是属于类的,不考虑它的继承
 *          如果父子类中出现同名静态成员变量
 *          那么它们就各自用各自的
 *
 *
 * @since 15:46
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        new Son().test();

        System.out.println(Father.numStatic);
        Father.numStatic = 888;
        System.out.println(Son.numStatic);
    }
}

class Father {
    int num = 100;
    static int numStatic = 666;
}

class Son extends Father {
    int num = 200;
    static int numStatic = 777;

    public void test() {
        System.out.println(num);
        System.out.println(super.num);
    }
}